﻿namespace Lilium.AG.Abl.Ast

type Rule = (Production * Evaluation)

and Production =
    // (имя кейса * привязка параметров * алиас кейса для связывания)
    | UnionCase of (string * string option list * string option)

and Evaluation =
    // (имя атрибута и значения * привязки параметров)
    | InheritedAttribute of (ValueAttribute * Parameter list)
    // (имя атрибута * привязки параметров)
    | SynthesizedAttribute of (string * Parameter list)

and Parameter =
    // имя значения
    | Value of string
    // (имя значения * имя атрибута)
    | ValueAttribute of ValueAttribute

and ValueAttribute = (string * string)